Skip to content

fix(bench): give sqs its own FIFO corpus alongside the drain deviation - #173

Merged
zannis merged 2 commits into
mainfrom
zannis/fix/sqs-fifo-corpus-deviation
Sep 8, 2026
Merged

fix(bench): give sqs its own FIFO corpus alongside the drain deviation#173
zannis merged 2 commits into
mainfrom
zannis/fix/sqs-fifo-corpus-deviation

Conversation

@zannis

@zannis zannis commented Sep 8, 2026

Copy link
Copy Markdown
Owner

Summary

#163's 60,000-message drain corpus never reaches consume_fifo: the FIFO cell holds no barrier and takes no drain, so it publishes the tier's 5,000 messages per shard and consumes them through the sequenced path, which LocalStack serves at a few messages per second. Measured today, the 64 B FIFO cell had drained half its 40,000-message corpus after five hours, and the matrix has three such cells (one per payload). The SQS pass was headed for about 30 hours of FIFO.

Change

  • Harness: --fifo-messages <n>, the per-shard corpus for the consume-fifo cell in place of the tier's per-consumer count. Every other flow keeps the tier's count. The row records the corpus it ran in messages, as drain rows record theirs.
  • bench.sh: SQS_FIFO_MESSAGES=100, appended for sqs only (the matrix carries no --fifo-messages, since every other backend runs the tier's FIFO corpus), and the deviation: line names both deviations.
  • benches/README.md: the SQS deviation section covers the FIFO corpus.

Tests

the_fifo_corpus_can_be_deviated_per_shard: with the knob, the FIFO scenario's corpus is 100 × 8 shards; the same build of the parallel flow with and without the knob yields identical corpora. Failed first on the unknown argument. Full harness suite passes (142). cargo fmt -- --check and both clippy gates pass.

The drain deviation never reaches consume_fifo: it holds no barrier and
takes no drain, so it publishes the tier's 5 000 messages per shard and
consumes them through the sequenced path, which LocalStack serves at a few
messages per second. Measured on 2026-09-08, the 64 B FIFO cell had drained
half its corpus after five hours, and there are three such cells.

Add --fifo-messages to the harness, the per-shard FIFO corpus in place of
the tier's per-consumer count, leaving every other flow on the tier's count;
bench.sh appends it for sqs only at 100 per shard and names both deviations
in its deviation line. The row records the corpus it ran in messages, as
the drain rows record theirs. The README's deviation section covers it.
@codecov

codecov Bot commented Sep 8, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.

📢 Thoughts on this report? Let us know!

…rker

Kafka's wrapper reports one FIFO worker and the tier already sizes its
corpus for that one worker, so an override described as per shard would
disagree with the count it replaces. Say per worker, which is what the code
did, and pin it with a one-worker test.
@cloudflare-workers-and-pages

cloudflare-workers-and-pages Bot commented Sep 8, 2026

Copy link
Copy Markdown

Deploying with  Cloudflare Workers  Cloudflare Workers

The latest updates on your project. Learn more about integrating Git with Workers.

Status Name Latest Commit Preview URL Updated (UTC)
✅ Deployment successful!
View logs
shove-docs 6d3ecaa Commit Preview URL

Branch Preview URL
Sep 08 2026, 03:23 PM

@zannis
zannis merged commit eebcf77 into main Sep 8, 2026
19 checks passed
zannis added a commit that referenced this pull request Sep 8, 2026
Measure SQS against LocalStack on the same host as the other published runs,
with both SQS deviations in place: the 60 000-message drain corpus from #163
and the 100-per-worker FIFO corpus from #173, plus the SNS byte-limit fix
from #171 so the 64 KiB batch publishes go through. 60 rows, no failures;
consumer_group and broadcast are recorded as unsupported, as the capability
traits say.

The document now holds every backend. The README and performance page say
so, and say what the SQS rows measure: LocalStack, at a recorded corpus, not
the AWS service.
zannis added a commit that referenced this pull request Sep 8, 2026
* bench(results): add the sqs run to the results document

Measure SQS against LocalStack on the same host as the other published runs,
with both SQS deviations in place: the 60 000-message drain corpus from #163
and the 100-per-worker FIFO corpus from #173, plus the SNS byte-limit fix
from #171 so the 64 KiB batch publishes go through. 60 rows, no failures;
consumer_group and broadcast are recorded as unsupported, as the capability
traits say.

The document now holds every backend. The README and performance page say
so, and say what the SQS rows measure: LocalStack, at a recorded corpus, not
the AWS service.

* test(chartgen): assert the grown canvas's plot minimum from the y axis, not the ticks

Tick labels stop short of the plot boundaries, so a tick span at 0.8 of the
minimum could pass an undersized plot. The y axis is a two-point vertical
polyline and bounds the plot body exactly; assert the full minimum from it.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant